package com.example.lasttrain;

import com.example.lasttrain.common.DatabaseUtils;
import com.example.lasttrain.common.Defines;
import com.example.lasttrain.common.LeftTimeCalculate;
import com.example.lasttrain.common.TimeData;

import android.media.MediaPlayer;
import android.os.Bundle;
import android.os.PowerManager;
import android.os.PowerManager.WakeLock;
import android.os.Vibrator;
import android.app.Activity;
import android.app.KeyguardManager;
import android.app.KeyguardManager.KeyguardLock;
import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.drawable.AnimationDrawable;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;

public class AlarmInfoActivity extends Activity {
    MediaPlayer mp;
	AnimationDrawable mAni;
    private WakeLock wakelock;
    private KeyguardManager.KeyguardLock keylock;
	
	Vibrator vibrator;
	
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_alarm_info);
        
        // スリープ状態から復帰する
        wakelock = ((PowerManager) getSystemService(this.POWER_SERVICE))
            .newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK
                | PowerManager.ACQUIRE_CAUSES_WAKEUP
                | PowerManager.ON_AFTER_RELEASE, "disableLock");
        wakelock.acquire();

        // スクリーンロックを解除する
        KeyguardManager keyguard = (KeyguardManager) getSystemService(this.KEYGUARD_SERVICE);
        keylock = keyguard.newKeyguardLock("disableLock");
        keylock.disableKeyguard();
        
        // アラーム音楽再生
        mp = MediaPlayer.create(this, R.raw.crrect_answer1);
        mp.start();
        
        // バイブレーション再生
        vibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE);
        long[] pattern = {500, 1000}; // OFF/ON/OFF/ON...
        vibrator.vibrate(pattern, 0);
        
        
        //To show alarm clock animation
        ImageView anime = (ImageView)findViewById(R.id.alarm_anime);
        mAni = (AnimationDrawable)anime.getBackground();
        anime.post(new Runnable(){
        	public void run(){
        		mAni.start();
        	}
        });
        
        // あと何分をセット
        TextView leftTime = (TextView)findViewById(R.id.left_time);
        // インテントのIDをもとにDBから終電時刻を取得
        Intent intent = getIntent();
        int id = intent.getIntExtra(Defines.DATA_ID, 0);
        TimeData trainTime = (DatabaseUtils.getContents(AlarmInfoActivity.this, id)).getTrainTime();
        // 終電時刻をセット
        LeftTimeCalculate leftTimeCal = new LeftTimeCalculate();
        leftTime.setText(leftTimeCal.calAlarm(trainTime));
        
        //アラーム停止ボタン
        Button stopButton;
        stopButton = (Button)findViewById(R.id.button2);
        stopButton.setOnClickListener(new View.OnClickListener() {
        	public void onClick(View v) {
                // DBのアラームフラグをOFFにセット
        		Intent intent = getIntent();
        		int id = intent.getIntExtra(Defines.DATA_ID, 0);
                DatabaseUtils.alarmContents(AlarmInfoActivity.this, id, 0);
        		// アラーム停止
        		mp.stop();
        		//vibrator.cancel();
        		finish();
        	}
        });
        
        Button mailButton;//メーラー起動ボタン
        mailButton = (Button)findViewById(R.id.button1);//メーラー起動ボタン
        mailButton.setOnClickListener(new View.OnClickListener() {
        	public void onClick(View v) {
        		// プリファレンスから値を取得
				SharedPreferences mPrefs = getSharedPreferences("pref",MODE_WORLD_READABLE|MODE_WORLD_WRITEABLE);
				// SharedPreferencesから各値を取得
				String sto = mPrefs.getString("to", "");
				String scc = mPrefs.getString("cc", "");
				String stitle = mPrefs.getString("title", "");
				String stext = mPrefs.getString("text", "");
				
				// メーラー起動
		        Intent inten = new Intent();
	    	    // アクションを指定(ACTION_SENDTOから変更)  
		        inten.setAction(Intent.ACTION_SEND); 
	    	    // データタイプを指定  
		        inten.setType("message/rfc822");  
//		        inten.setData(Uri.parse("mailto:test@test.com"));
		        inten.putExtra(Intent.EXTRA_EMAIL, new String[]{sto}); 
		        inten.putExtra(Intent.EXTRA_CC, new String[]{scc}); 
		        inten.putExtra(Intent.EXTRA_SUBJECT, stitle);  
		        inten.putExtra(Intent.EXTRA_TEXT, stext);
		        startActivity(inten); 
        	}
        });
    }
    
    
    
    @Override
	protected void onPause() {
		// TODO Auto-generated method stub
		super.onPause();
		
		//どの理由であれ画面が隠されると振動を止める
		// アラームスリープ復帰後に来てしまうためonDestroyに引っ越し
//		vibrator.cancel();
	}
    
    @Override
	protected void onDestroy() {
		super.onDestroy();
    	
		//バックキー押下や確認押下でバイブレーションを止める
		vibrator.cancel();
    }

	@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_alarm_info, menu);
        return true;
    }
}
